/**
@author		Jong Min, Lee
@date		  01/21/2014
@breif		main application global instance set

copyright(c) Tae Young Soft. All right reserved. 2014
*/
#pragma once

#include "Taurus_Common/IAppGlobalInstanceSet.h"

class CAppGlobalInstanceSet : public IAppGlobalInstanceSet
{
private:
  DISALLOW_COPY_AND_ASSIGN(CAppGlobalInstanceSet);

  /**
  @brief		default constructor
  */
  CAppGlobalInstanceSet();

public:

  /**
  @brief		destructor
  */
  ~CAppGlobalInstanceSet();

  /**
  @brief		get the single instance of application global instance set
  @return		pointer to application global instance set
  */
  static CAppGlobalInstanceSet* getInstance();


  /**
  @brief		get global worklist
  @return		pointer to global worklist instance
  */
  virtual IWorklistModule* getWorklist();

  /**
  @brief		get global viewer instance
  @return		pointer to global viewer instance
  */
  virtual IViewerModule* getViewer();

  /**
  @brief		get global monitor administrator instance
  @return		pointer to global monitor administrator instance
  */
  virtual CMonitorAdmin* getMonitorAdmin();

  /**
  @brief		get global system environment instance
  @return		pointer to global system environment instance
  */
  virtual CSystemEnvironment* getSystemEnvironment();

private:
  
  //pointer to the single instance of application global instance set
  static CAppGlobalInstanceSet* m_pInstance;

  //worklist
  IWorklistModule* m_pWorklist;

  //viewer
  IViewerModule* m_pViewer;
};